#include "lvgl.h"
//#include "test_win.h"
//#include "menu_win.h"
#include "func_win.h"
#include "usart.h"

LV_FONT_DECLARE(major_font_30);//声明字体  标题栏
LV_FONT_DECLARE(major_font_24);//声明字体  正文
LV_FONT_DECLARE(major_font_20);//声明字体  正文
LV_FONT_DECLARE(major_font_16);//声明字体  正文


static lv_obj_t *menu_win = NULL;//main_win窗口容器



//创建三个按钮
//lv_obj_t * menu_btn_home,* menu_btn_menu,* menu_btn_return;

//uint8_t win_id = 0;//标记界面ID

//mainwin界面按键回调



//主页按键
static void P1_event_btn_h_cb(lv_event_t* e)
{
	  lv_obj_t * obj = lv_event_get_target(e);        // 获取触发事件的部件(对象)
    lv_event_code_t code = lv_event_get_code(e);    // 获取当前部件(对象)触发的事件代码

    switch(code){
        case LV_EVENT_VALUE_CHANGED:
            printf("LV_EVENT_VALUE_CHANGED\n");
            break;
				
				case LV_EVENT_RELEASED:		//按键抬起
						printf("released\r\n");			
						lv_obj_del(menu_win);	//删除当前界面
						test_win_create();		//返回主界面				
						break;
				
        default:
            //printf("NONE\n");
            break;
    }
}

//返回按键
static void P1_event_btn_r_cb(lv_event_t* e)
{
	  lv_obj_t * obj = lv_event_get_target(e);        // 获取触发事件的部件(对象)
    lv_event_code_t code = lv_event_get_code(e);    // 获取当前部件(对象)触发的事件代码

    switch(code){
        case LV_EVENT_VALUE_CHANGED:
            printf("LV_EVENT_VALUE_CHANGED\n");
            break;
				
				case LV_EVENT_RELEASED:			//按键抬起
						printf("released\r\n");			
						lv_obj_del(menu_win);		//删除当前界面
						test_win_create();			//返回主界面				
						break;
				
        default:
            //printf("NONE\n");
            break;
    }
}

//矩阵键盘回调函数   执行界面跳转
static void btnm_event_handler(lv_event_t * e)
{
	lv_event_code_t code = lv_event_get_code(e);
	lv_obj_t * obj = lv_event_get_target(e);
	if(code == LV_EVENT_VALUE_CHANGED) 
	{
		
		uint32_t id = lv_btnmatrix_get_selected_btn(obj);// 获取当前被点击的按钮的ID	
		printf("btnm id is %d\r\n",id);
		//const char * txt = lv_btnmatrix_get_btn_text(obj, id);// 根据按钮ID获取对应按钮上的文本
		//LV_LOG_USER("%s was pressed\n", txt);
		
		if(id == 0)//界面跳转--弹药信息
		{
			lv_obj_del(menu_win);		//删除当前界面
			ammo_win_create();			//进入弹药信息界面
			
		}
		else if(id == 1)//界面跳转--工况信息
		{
			lv_obj_del(menu_win);		//删除当前界面
			work_win_create();			//进入工况信息界面
			
		}
		else if(id == 2)//界面跳转--成员信息
		{
			lv_obj_del(menu_win);		//删除当前界面
			member_win_create();
			
		}
		else if(id == 3)//界面跳转--状态信息
		{
			lv_obj_del(menu_win);		//删除当前界面
			state_win_create();
			
		}
		else if(id == 4)//界面跳转--火工品
		{
			lv_obj_del(menu_win);		//删除当前界面
			fire_win_create();
			
		}
		else if(id == 5)//界面跳转--伤情信息
		{
			lv_obj_del(menu_win);		//删除当前界面
			hurt_win_create();
			
		}
		else if(id == 6)//界面跳转--定位信息
		{
			lv_obj_del(menu_win);		//删除当前界面
			position_win_create();
			
		}
		
		else if(id == 7)//界面跳转--演习参数
		{
			lv_obj_del(menu_win);		//删除当前界面
			practice_win_create();
			
		}
		else if(id == 8)//界面跳转--关于
		{
			lv_obj_del(menu_win);		//删除当前界面
			about_win_create();
			
		}		
		
	}
	else if(code == LV_EVENT_CLICKED) 
	{
		uint32_t id = lv_btnmatrix_get_selected_btn(obj);
		//const char * txt = lv_btnmatrix_get_btn_text(obj, id);
		//LV_LOG_USER("LV_EVENT_CLICKED: %s was pressed\n", txt);
		printf("cliked id is %d\r\n",id);
		
	}
}








//创建菜单界面
void menu_win_create()
{
	printf("menu win creat\r\n");
	
	static lv_style_t obj_style;
  lv_style_reset(&obj_style);
  lv_style_init(&obj_style); 					// 样式初始化
  lv_style_set_radius(&obj_style, 0); // 设置样式圆角弧度  

	menu_win = lv_obj_create(lv_scr_act());  // 创建一个屏幕来模拟容器
	
	if(menu_win != NULL)//创建成功
	{
		printf("menu_win create success\r\n");
		//设置窗口特性
		lv_obj_set_style_pad_all(menu_win,0,0);//padding改为0-->防止conent内缩20像素
    //lv_obj_set_style_bg_color(test_win, lv_palette_main(LV_PALETTE_NONE), 0);//不设置背景色就默认白色		
    lv_obj_set_size(menu_win, 320, 480);
    lv_obj_add_style(menu_win, &obj_style, 0);
		lv_obj_set_scrollbar_mode(menu_win,LV_SCROLLBAR_MODE_OFF);//不显示滚动条
		


    /* 创建下方3个按键 */		
		static lv_style_t btn_style;
	  lv_style_reset(&btn_style);
		lv_style_init(&btn_style); // 样式初始化
		
    lv_obj_t * btn_h = lv_btn_create(menu_win);       // 创建一个btn部件(对象),他的父对象是活动屏幕对象
		lv_obj_t * btn_m = lv_btn_create(menu_win);
		lv_obj_t * btn_r = lv_btn_create(menu_win);
    
		
		lv_style_set_radius(&btn_style, 5);//设置圆角
		//lv_style_set_bg_opa(&btn_style, LV_OPA_COVER);//背景透明
		lv_style_set_bg_color(&btn_style, lv_palette_lighten(LV_PALETTE_BLUE_GREY,3));//背景颜色  lv_palette_main-->调色板
		lv_style_set_border_width(&btn_style, 2);//边框
		lv_style_set_width(&btn_style,80);
		lv_style_set_height(&btn_style,50);
		
		lv_obj_set_align(btn_h,LV_ALIGN_BOTTOM_LEFT);//设置对其位置
		lv_obj_set_align(btn_m,LV_ALIGN_BOTTOM_MID);
		lv_obj_set_align(btn_r,LV_ALIGN_BOTTOM_RIGHT);
		
		//给按键添加回调函数
		lv_obj_add_event_cb(btn_h, P1_event_btn_h_cb, LV_EVENT_RELEASED, NULL);
		lv_obj_add_event_cb(btn_r, P1_event_btn_r_cb, LV_EVENT_RELEASED, NULL);
				
		lv_obj_add_style(btn_h, &btn_style, 0);
		lv_obj_add_style(btn_m, &btn_style, 0);
		lv_obj_add_style(btn_r, &btn_style, 0);

		//给3个按键添加文本
		lv_obj_t *label_h = lv_label_create(btn_h); // 创建标签文本	
		lv_obj_set_style_text_font(label_h, &major_font_24, 0);        // 设置标签文本
		lv_label_set_text(label_h, "主页"); // 设置文本

		lv_obj_t *label_m = lv_label_create(btn_m); // 创建标签文本	
		lv_obj_set_style_text_font(label_m, &major_font_24, 0);        // 设置标签文本
		lv_label_set_text(label_m, "菜单"); // 设置文本
		
		lv_obj_t *label_r = lv_label_create(btn_r); // 创建标签文本	
		lv_obj_set_style_text_font(label_r, &major_font_24, 0);        // 设置标签文本
		lv_label_set_text(label_r, "返回"); // 设置文本

		


		//创建矩阵键盘
		static const char * map[] = {"弹药信息 ", "工况信息 ", "成员信息 ", "\n", "状态信息 ", "火工品 ", "伤情信息 ","\n","定位信息 ","演习参数 ","关于 ",NULL};		
		lv_obj_t * btnm = lv_btnmatrix_create(menu_win);
		lv_obj_set_style_text_font(btnm, &major_font_16, 0);// 下拉列表设置新的字体
		lv_btnmatrix_set_map(btnm, map);//设置按键文字
		lv_obj_set_pos(btnm,10,80);//设置位置
		lv_obj_set_size(btnm,290,290);//设置整个控件大小
		lv_obj_set_style_pad_row(btnm, 15, LV_PART_MAIN);//设置间隙宽度
		lv_obj_set_style_pad_column(btnm, 15, LV_PART_MAIN);//设置间隙宽度

		lv_btnmatrix_set_one_checked(btnm, true);//设置一次检查功能
		//lv_obj_set_style_bg_color(btnm, lv_color_hex(0x78c146) , LV_STATE_PRESSED | LV_PART_ITEMS);//设置按下的颜色
		lv_btnmatrix_set_btn_ctrl_all(btnm, LV_BTNMATRIX_CTRL_NO_REPEAT);//禁止长按
		lv_obj_add_event_cb(btnm, btnm_event_handler, LV_EVENT_VALUE_CHANGED, NULL);//添加回调函数

		
		

	}

	

}








